#ifndef IDEVICEBUILDER_H_
#define IDEVICEBUILDER_H_

#include "zlbase/controllor/IDevice.h"
#include "zlbase/controllor/IDoorControlBoard.h"
#include "zlbase/controllor/IMonitorControlBoard.h"

namespace zl
{
namespace zlbase
{

/// \brief 设备构建参数
///
/// 用于描述设备的各个参数，这些参数将用于构建设备对象或用于跟设备通信
struct DeviceOption
{
    int32_t device_type;   ///< 设备类型
    int32_t protocol_type; ///< 协议类型

    DatalinkOption linkoption;
};

/// \brief 开门板构造者抽象类
class IDoorControlBoardBuilder
{
public:
    virtual ~IDoorControlBoardBuilder() = default;

    virtual std::shared_ptr<IDoorControlBoard> Concreate(const DeviceOption &option) = 0;
};

/// \brief 监控板构造者抽象类
class IMonitorControlBoardBuilder
{
public:
    virtual ~IMonitorControlBoardBuilder() = default;

    virtual std::shared_ptr<IMonitorControlBoard> Concreate(const DeviceOption &option) = 0;
};

} // namespace zlbase
} // namespace zl

#endif // IDEVICEBUILDER_H_
